Django ORM (Object-Relational Mapping) হল একটি শক্তিশালী টুল, যা Python কোড এবং ডেটাবেসের মধ্যে যোগাযোগ স্থাপন করে। এর মাধ্যমে আপনি ডেটাবেসের টেবিলগুলোর সাথে Python ক্লাসের মাধ্যমে ইন্টারঅ্যাক্ট করতে পারেন, যা SQL কোড লেখার প্রয়োজনীয়তা দূর করে। Django ORM ব্যবহার করে ডেটাবেস পরিচালনা করা সহজ এবং দ্রুত।
Django ORM কী?
Django ORM একটি পদ্ধতি যা আপনাকে ডেটাবেসের টেবিল এবং তার ডেটার সাথে Python কোডের মাধ্যমে কাজ করতে দেয়। ORM ব্যবহার করলে, SQL কোড না লিখেই ডেটাবেসে ইনসার্ট, আপডেট, ডিলিট, এবং সিলেক্ট অপারেশন করা সম্ভব হয়।
ORM আপনাকে ডেটাবেসের রেকর্ডগুলি Python অবজেক্ট হিসেবে দেখানোর সুযোগ দেয় এবং আপনি সেই অবজেক্টগুলোর মাধ্যমে ডেটাবেসে অপারেশন করতে পারেন।
Django ORM এর মাধ্যমে ডেটাবেস পরিচালনার মূল কাজগুলো
১. মডেল তৈরি করা
প্রথমে, Django ORM ব্যবহার করতে হলে আপনাকে একটি মডেল তৈরি করতে হবে। মডেল হচ্ছে ডেটাবেসের টেবিলের জন্য Python ক্লাস, যার প্রতিটি ফিল্ড ডেটাবেস টেবিলের কলামের প্রতিনিধিত্ব করে।
উদাহরণ:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
এখানে Post ক্লাসটি একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করছে, যেখানে title, content, author, এবং created_at ফিল্ডগুলো ডেটাবেসের কলাম হিসেবে কাজ করবে।
২. মডেল থেকে ডেটা রিট্রিভ করা
Django ORM ব্যবহার করে আপনি সহজেই ডেটাবেস থেকে ডেটা নিয়ে আসতে পারেন। ডেটা রিট্রিভ করার জন্য objects ম্যানেজার ব্যবহার করা হয়।
সব রেকর্ড নিয়ে আসা:
posts = Post.objects.all()কিছু নির্দিষ্ট রেকর্ড নিয়ে আসা (ফিল্টার করা):
posts = Post.objects.filter(author='John Doe')একটি রেকর্ড খুঁজে বের করা (ফার্স্ট মেচিং রেকর্ড):
post = Post.objects.get(id=1)প্রথম রেকর্ড খুঁজে বের করা:
first_post = Post.objects.first()
৩. নতুন রেকর্ড ইনসার্ট করা
Django ORM এর মাধ্যমে নতুন রেকর্ড ডেটাবেসে ইনসার্ট করা খুবই সহজ। আপনাকে শুধু মডেল ক্লাসের একটি ইনস্ট্যান্স তৈরি করতে হবে এবং তা সেভ করতে হবে।
post = Post(title='New Post', content='This is the content of the new post', author='Jane Doe')
post.save()
এখানে save() মেথডটি নতুন রেকর্ড ডেটাবেসে ইনসার্ট করবে।
৪. রেকর্ড আপডেট করা
আপনি Django ORM এর মাধ্যমে একটি রেকর্ডের ডেটা আপডেট করতে পারেন। এজন্য প্রথমে রেকর্ডটি খুঁজে বের করতে হবে এবং তারপর তার ফিল্ড আপডেট করতে হবে।
post = Post.objects.get(id=1)
post.title = 'Updated Title'
post.save()
এখানে save() মেথডটি ব্যবহার করে আপডেট করা রেকর্ডটি ডেটাবেসে সেভ করা হয়েছে।
৫. রেকর্ড ডিলিট করা
Django ORM এর মাধ্যমে আপনি রেকর্ড ডিলিটও করতে পারেন। রেকর্ডটি ডিলিট করতে delete() মেথড ব্যবহার করতে হবে।
post = Post.objects.get(id=1)
post.delete()
এটি ডেটাবেস থেকে id=1 রেকর্ডটি মুছে ফেলবে।
৬. ডেটাবেসে কাস্টম কুয়েরি চালানো
Django ORM সাধারণত স্ট্যান্ডার্ড ডেটাবেস অপারেশনগুলোর জন্য যথেষ্ট হলেও, যদি আপনি কিছু কাস্টম SQL কুয়েরি চালাতে চান, তবে Django এর raw() মেথড ব্যবহার করতে পারেন।
posts = Post.objects.raw('SELECT * FROM myblog_post WHERE author = %s', ['John Doe'])
এটি Post টেবিল থেকে author ফিল্ডের মান 'John Doe' যেখানে রয়েছে, সেই রেকর্ডগুলো নিয়ে আসবে।
Django ORM এর সুবিধা
- কোড কমানো: SQL কোড না লিখে, Python কোডের মাধ্যমে ডেটাবেস অপারেশন করা যায়।
- সুরক্ষা: SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা পাওয়া যায় কারণ Django ORM স্বয়ংক্রিয়ভাবে ডেটা স্যানিটাইজ করে।
- অবজেক্ট-অরিয়েন্টেড পদ্ধতি: ORM এর মাধ্যমে ডেটাবেস রেকর্ডগুলো Python অবজেক্ট হিসেবে ব্যবহার করা যায়, যা কোড লেখাকে আরও সহজ এবং পঠনযোগ্য করে।
- মাইগ্রেশন সুবিধা: Django ORM-এর সাথে সংযুক্ত মাইগ্রেশন ফিচার ব্যবহার করে ডেটাবেস স্কিমার পরিবর্তন করা সহজ এবং সিস্টেমের প্রতিটি পরিবর্তন ট্র্যাক করা সম্ভব।
Django ORM এর মাধ্যমে ডেটাবেস পরিচালনায় কিছু সাধারণ কাজ
১. filter() মেথড:
filter() মেথডটি ডেটাবেস থেকে নির্দিষ্ট শর্ত অনুযায়ী রেকর্ডগুলো ফিল্টার করে নিয়ে আসে।
posts = Post.objects.filter(author='Jane Doe')
২. exclude() মেথড:
exclude() মেথডটি filter() এর বিপরীত, যেখানে নির্দিষ্ট শর্তের বাইরে থাকা রেকর্ডগুলো নিয়ে আসে।
posts = Post.objects.exclude(author='John Doe')
৩. order_by() মেথড:
order_by() মেথডটি রেকর্ডগুলোকে একটি নির্দিষ্ট অর্ডারে সাজাতে ব্যবহৃত হয়।
posts = Post.objects.all().order_by('created_at')
৪. values() এবং values_list() মেথড:
এই মেথডগুলো ব্যবহৃত হয় যখন আপনি শুধুমাত্র নির্দিষ্ট ফিল্ডের মানগুলো প্রয়োজন, পুরো অবজেক্ট নয়।
posts = Post.objects.values('title', 'author')
সারাংশ
Django ORM ডেটাবেস পরিচালনায় একটি অত্যন্ত শক্তিশালী টুল। এটি আপনাকে ডেটাবেসের সাথে সহজে কাজ করতে সক্ষম করে, Python কোডের মাধ্যমে ডেটাবেসের টেবিলগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারে। ORM এর মাধ্যমে আপনি ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ডিলিট সহ বিভিন্ন ডেটাবেস অপারেশন সহজেই করতে পারবেন। Django ORM ডেটাবেস কাজগুলো সহজ, নিরাপদ এবং কার্যকরভাবে পরিচালিত করতে সহায়ক।
Read more